package cn.hfuu.flink;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @author oldliu
 * @since 1.0
 */
public class SocketWaterSend {
    public static void main(String[] args) {
        try {

            String words = "新盖房   落宝滩   北河店   东茨村   北郭村   王快水库  中唐梅   西大洋水库   枣林庄   献县   周官屯   肖家楼   北陈屯   郭家屯   三道河子" +
                    "   韩家营   古北口   东武仕水库   莲花口   观台   匡门口    衡水   安陵   赶水坝   固安   史各庄   桃林口水库    新乐  小觉   岗南水库   " +
                    "黄壁庄水库    北中山    微水   平山    滦县  艾辛庄   石匣里    响水堡    柴沟堡   安格庄水库   阜平   倒马关    龙门水库   捷地   刘家庄   " +
                    "牛牧屯   双山子   横山岭水库    地都    陡河水库   小定府庄    邢家湾   朱庄水库   临城水库   壶流河水库   钱家沙洼   友谊水库";
            String[] stations = words.split("\\s+");
            ServerSocket st = new ServerSocket(7777);
            ExecutorService service = Executors.newFixedThreadPool(20);
            while (true) {
                final Socket s = st.accept();
                System.out.println(s + "连接了。。。");
                service.submit(
                        new Thread(() -> {
                            try {
                                PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
                                while (true) {
                                    String str =
                                            stations[(int) (Math.random() * stations.length)] + "," + (System.currentTimeMillis()) + "," + (int) (Math.random() * 1000 + 5);
                                    pw.println(str);
                                    Thread.sleep((long) (100 * Math.random()));
                                    System.out.println("采集了：" + str);
                                    //Thread.sleep(20L);
                                }
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
